unit FireBirdNotaFiscalImpressaDAO;

interface

uses NotaFiscalImpressaDAO, ImpressaoNotaFiscal, DB, Contnrs, DMGeral,
 DBLOcalS, SQlExpr, DateUtils, SysUtils, SqlTimSt;

type
  TFBNotaFiscalImpressaDAO = class(TInterfacedObject,INotaFiscalImpressaoDAO)
  public
    function AlterarNotaFiscal(Nota: TImpressaoNotaFiscal): Boolean;
    function DataSetToNotaFiscal(DataSet: TDataSet): TObjectList;
    function ExcluirNotaFiscal( Numero: String ): Boolean;
    function InserirNotaFiscal(Nota : TImpressaoNotaFiscal) :integer;
    function SelecionarNotaPorID(id: Integer): TImpressaoNotaFiscal;
    function SelecionarNotaPorNumero(Numero: String; Ano: Integer): TImpressaoNotaFiscal;
    function SelecionarNotas(criteria: String): TDataSet;
    function ExisteNota(Numero: String; Ano: Integer): Boolean;
    function SelecionarIdNota(Numero: String; Ano: Integer): Integer;
  end;
  TFBNotaProdutoDAO = class(TInterfacedObject,INotaProdutoDAO)
  public
    function AlterarProduto(Item: TItemNotaFiscal): Boolean;
    function DataSetParaProdutos(DataSet: TDataSet): TObjectList;
    function ExcluirProduto(Item: TItemNotaFiscal): Boolean;
    function InserirProduto(Item: TItemNotaFiscal): Boolean;
    function SelecionarProdutos(criteria: String): TDataSet;
    function SelecionarProdutosPorNota(id: Integer): TDataSet;
    procedure InserirProdutosNota(Itens: TObjectList; Notaidf: Integer);
  end;
  TFBNotaServicoDAO = class(TInterfacedObject,INotaServicoDAO)
  public
    function AlterarServico(Item: TItemNotaFiscal): Boolean;
    function DataSetParaServico(DataSet: TDataSet): TObjectList;
    function ExcluirServico(Item: TItemNotaFiscal): Boolean;
    function InserirServico(Item: TItemNotaFiscal): Boolean;
    function SelecionarServico(criteria: String): TDataSet;
    function SelecionarServicoPorNota(id: Integer): TDataSet;
    procedure InserirServicosNota(Itens: TObjectList; Notaidf: Integer);
  end;
  TFBNotaTransporte = class(TInterfacedObject,INotaTransporteDAO)
  public
    function AlterarTransporte(Nota: TTransporteNota): Boolean;
    function DataSetToTransporte(DataSet: TDataSet): TObjectList;
    function ExcluirTransporte(Nota: TTransporteNota): Boolean;
    function InserirTransporte(nota: TTransporteNota): Boolean;
    function SelecionarPorNota(id: Integer): TTransporteNota;
    function SelecionarTransporte(criteria: String): TDataSet;
  end;

implementation

uses StrUtils, Classes;

{ TFBNotaFiscalImpressaDAO }
  {
function TFBNotaFiscalImpressaDAO.AlterarNotaFiscal(
  Nota: TImpressaoNotaFiscal): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('UPDATE NOTAS_FISCAIS SET ');
    SQL.Add('NFI_NATUREZAOPERACAO = :NFI_NATUREZAOPERACAO,');
    SQL.Add('NFI_CONDICOESPAGAMENTO = :NFI_CONDICOESPAGAMENTO,');
    SQL.Add('NFI_CFOP = :NFI_CFOP,');
    SQL.Add('NFI_DESTNOME = :NFI_DESTNOME,');
    SQL.Add('NFI_DESTCNPJ = :NFI_DESTCNPJ,');
    SQL.Add('NFI_DESTENDERECO = :NFI_DESTENDERECO,');
    SQL.Add('NFI_DESTMUNICIPIO = :NFI_DESTMUNICIPIO,');
    SQL.Add('NFI_DESTFONEFAX = :NFI_DESTFONEFAX,');
    SQL.Add('NFI_DESTUF = :NFI_DESTUF,');
    SQL.Add('NFI_DESTIE = :NFI_DESTIE,');
    SQL.Add('NFI_EMISSAO = :NFI_EMISSAO,');
    SQL.Add('NFI_DATAENTRADASAIDA = :NFI_DATAENTRADASAIDA,');
    SQL.Add('NFI_HORAENTRADASAIDA = :NFI_HORAENTRADASAIDA,');
    SQL.Add('NFI_TIPONOTA = :NFI_TIPONOTA,');
    SQL.Add('NFI_TIPOFRETE = :NFI_TIPOFRETE,');
    SQL.Add('NFI_TOTBASEDECALCULO = :NFI_TOTBASEDECALCULO,');
    SQL.Add('NFI_TOTICMS = :NFI_TOTICMS, ');
    SQL.Add('NFI_TOTBASEST = :NFI_TOTBASEST,');
    SQL.Add('NFI_TOTICMSST = :NFI_TOTICMSST,');
    SQL.Add('NFI_TOTVALOR_FRETE = :NFI_TOTVALOR_FRETE,');
    SQL.Add('NFI_TOTVALOR_SEGURO = :NFI_TOTVALOR_SEGURO,');
    SQL.Add('NFI_TOTOUTRASDESP = :NFI_TOTOUTRASDESP,');
    SQL.Add('NFI_TOTVALORIPI = :NFI_TOTVALORIPI,');
    SQL.Add('NFI_TOTISS = :NFI_TOTISS,');
    SQL.Add('NFI_DADOSADICIONAIS = :NFI_DADOSADICIONAIS,');
    SQL.Add('NFI_DESTBAIRRO = :NFI_DESTBAIRRO,');
    SQL.Add('NFI_DESTCEP = :NFI_DESTCEP,');
    SQL.Add('NFI_NUMERO = :NFI_NUMERO,');
    SQL.Add('NFI_ALIQUOTAISS = :NFI_ALIQUOTAISS');
    SQL.Add('WHERE NFI_IDF = :NFI_IDF');
    ParamByName('NFI_NATUREZAOPERACAO').AsString    := Nota.NaturezaOperacao;
    ParamByName('NFI_CONDICOESPAGAMENTO').AsString  := Nota.CondicoesPagamento;
    ParamByName('NFI_CFOP').AsString                := nota.CFOP;
    ParamByName('NFI_DESTNOME').AsString            := Nota.DM_NomeRazaoSocial;
    ParamByName('NFI_DESTCNPJ').AsString            := Nota.DM_CPF_CNPJ;
    ParamByName('NFI_DESTENDERECO').AsString        := Nota.DM_Endereco;
    ParamByName('NFI_DESTMUNICIPIO').AsString       := Nota.DM_Municipio;
    ParamByName('NFI_DESTFONEFAX').AsString         := Nota.DM_FoneFax;
    ParamByName('NFI_DESTUF').AsString              := Nota.DM_UF;
    ParamByName('NFI_DESTIE').AsString              := Nota.DM_InscricaoEstadual;
    ParamByName('NFI_EMISSAO').AsSQLTimeStamp       := DateTimeToSQLTimeStamp(Nota.DM_DataEmissao);
    ParamByName('NFI_DATAENTRADASAIDA').AsDate      := Nota.DM_DataSaidaEntrada;
    ParamByName('NFI_HORAENTRADASAIDA').AsTime      := Nota.DM_HoraSaidaEntrada;
    ParamByName('NFI_TIPONOTA').AsString            := IfThen(Nota.NotaSaida,'S','E');
    ParamByName('NFI_TIPOFRETE').AsString           := IfThen(Nota.DadosTransporte.FretePorContaEmitente,'E','D');
    ParamByName('NFI_TOTBASEDECALCULO').AsCurrency  := Nota.BaseCalculoICMS;
    ParamByName('NFI_TOTICMS').AsCurrency           := Nota.ValorTotalICMS;
    ParamByName('NFI_TOTBASEST').AsCurrency         := Nota.BaseCalculoICMSSubstituicao;
    ParamByName('NFI_TOTICMSST').AsCurrency         := Nota.ValorICMSSubstituicao;
    ParamByName('NFI_TOTVALOR_FRETE').AsCurrency    := Nota.ValorFrete;
    ParamByName('NFI_TOTVALOR_SEGURO').AsCurrency   := Nota.ValorSeguro;
    ParamByName('NFI_TOTOUTRASDESP').AsCurrency     := Nota.OutrasDespesasAcessorias;
    ParamByName('NFI_TOTVALORIPI').AsCurrency       := Nota.ValorIPI;
    ParamByName('NFI_TOTISS').AsCurrency            := Nota.ValorISS;
    ParamByName('NFI_DADOSADICIONAIS').AsMemo       := Nota.DadosAdicionais.Text;
    ParamByName('NFI_DESTBAIRRO').AsString          := Nota.DM_BairroDistrito;
    ParamByName('NFI_DESTCEP').AsString             := Nota.DM_CEP;
    ParamByName('NFI_NUMERO').AsString              := Nota.NumeroNota;
    ParamByName('NFI_ALIQUOTAISS').AsFloat          := Nota.AliquotaISS;
    ParamByName('NFI_IDF').AsInteger                := Nota.NotaIDF;
    Result := ExecSQL = 1;
  end;
  FreeAndNil(Query);
end;

function TFBNotaFiscalImpressaDAO.DataSetToNotaFiscal(
  DataSet: TDataSet): TObjectList;
var
  Lista : TObjectList;
  Nota : TImpressaoNotaFiscal;
begin
  Lista := TObjectList.Create;
  with DataSet do begin
    First;
    while not Eof do begin
      Nota := TImpressaoNotaFiscal.Create;
      Nota.NotaIDF                  := FieldByName('NFI_IDF').AsInteger;
      Nota.NaturezaOperacao         := FieldByName('NFI_NATUREZAOPERACAO').AsString;
      Nota.CondicoesPagamento       := FieldByName('NFI_CONDICOESPAGAMENTO').AsString;
      Nota.CFOP                     := FieldByName('NFI_CFOP').AsString;
      Nota.DM_NomeRazaoSocial       := FieldByName('NFI_DESTNOME').AsString;
      Nota.DM_CPF_CNPJ              := FieldByName('NFI_DESTCNPJ').AsString;
      Nota.DM_Endereco              := FieldByName('NFI_DESTENDERECO').AsString;
      Nota.DM_Municipio             := FieldByName('NFI_DESTMUNICIPIO').AsString;
      Nota.DM_FoneFax               := FieldByName('NFI_DESTFONEFAX').AsString;
      Nota.DM_UF                    := FieldByName('NFI_DESTUF').AsString;
      Nota.DM_InscricaoEstadual     := FieldByName('NFI_DESTIE').AsString;
      Nota.DM_DataEmissao           := FieldByName('NFI_EMISSAO').AsDateTime;
      Nota.DM_DataSaidaEntrada      := FieldByName('NFI_DATAENTRADASAIDA').AsDateTime;
      Nota.DM_HoraSaidaEntrada      := FieldByName('NFI_HORAENTRADASAIDA').AsDateTime;
      Nota.NotaSaida                := FieldByName('NFI_TIPONOTA').AsString = 'S';
      Nota.DadosTransporte.FretePorContaEmitente := FieldByName('NFI_TIPOFRETE').AsString = 'E';
      Nota.ValorFrete               := FieldByName('NFI_TOTVALOR_FRETE').AsCurrency;
      Nota.ValorSeguro              := FieldByName('NFI_TOTVALOR_SEGURO').AsCurrency;
      Nota.OutrasDespesasAcessorias := FieldByName('NFI_TOTOUTRASDESP').AsCurrency;
      Nota.ValorIPI                 := FieldByName('NFI_TOTVALORIPI').AsCurrency;
      if not Assigned(Nota.DadosAdicionais) then
        Nota.DadosAdicionais := TStringList.Create;
      Nota.DadosAdicionais.Text     := FieldByName('NFI_DADOSADICIONAIS').AsString;
      Nota.DM_BairroDistrito        := FieldByName('NFI_DESTBAIRRO').AsString;
      Nota.DM_CEP                   := FieldByName('NFI_DESTCEP').AsString;
      Nota.NumeroNota               := FieldByName('NFI_NUMERO').AsString;
      NOta.AliquotaISS              := FieldByName('NFI_ALIQUOTAISS').AsFloat;
      Next;
      Lista.Add(Nota);
    end;
  end;
  Result := Lista;
end;

function TFBNotaFiscalImpressaDAO.ExcluirNotaFiscal( Numero: String ): Boolean;
var
  Query  : TSQLQuery;
  IdfNota: Integer;
begin
  IdfNota := 0;
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;

    SQL.Text := 'SELECT NFI_IDF FROM NOTAS_FISCAIS WHERE NFI_NUMERO = :NFI_NUMERO';
    ParamByName('NFI_NUMERO').AsInteger := StrToInt(Numero);
    Open;
    if not IsEmpty then
      IdfNota := FieldbyName('NFI_IDF').AsInteger;

    SQL.Text := 'DELETE FROM NOTAS_FISCAIS_TRANSPORTE WHERE NFI_IDF = :NFI_IDF';
    ParamByName('NFI_IDF').AsInteger := IdfNota;
    ExecSQL;

    SQL.Text := 'DELETE FROM NOTAS_FISCAIS_PRODUTOS WHERE NFI_IDF = :NFI_IDF';
    ParamByName('NFI_IDF').AsInteger := IdfNota;
    ExecSQL;

    SQL.Text := 'DELETE FROM NOTAS_FISCAIS_SERVICOS WHERE NFI_IDF = :NFI_IDF';
    ParamByName('NFI_IDF').AsInteger := IdfNota;
    ExecSQL;

    SQL.Text := 'DELETE FROM NOTAS_FISCAIS WHERE NFI_IDF = :NFI_IDF';
    ParamByName('NFI_IDF').AsInteger := IdfNota;
    Result := ExecSQL = 1;
  end;
  FreeAndNil(Query);
end;

function TFBNotaFiscalImpressaDAO.ExisteNota(Numero: String;
  Ano: Integer): Boolean;
var
  DataSet : TSQLClientDataSet;
begin
  DataSet := TSQLClientDataSet.Create(nil);
  with DataSet do begin
    DBConnection  := DtmGeral.ConexaoBanco;
    CommandText   := 'SELECT COUNT(*) FROM NOTAS_FISCAIS WHERE NFI_NUMERO = ' +
      QuotedStr(Numero) + ' AND EXTRACT(YEAR FROM NFI_EMISSAO) = ' + IntToStr(ano);
    Open;
    Result := Fields[0].AsInteger = 1;
  end;
end;

function TFBNotaFiscalImpressaDAO.InserirNotaFiscal(Nota: TImpressaoNotaFiscal) : integer;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('INSERT INTO NOTAS_FISCAIS(');
    SQL.Add('NFI_NATUREZAOPERACAO, NFI_CONDICOESPAGAMENTO, NFI_CFOP,');
    SQL.Add('NFI_DESTNOME,NFI_DESTCNPJ, NFI_DESTENDERECO, NFI_DESTMUNICIPIO,');
    SQL.Add('NFI_DESTFONEFAX, NFI_DESTUF, NFI_DESTIE, NFI_EMISSAO,');
    SQL.Add('NFI_DATAENTRADASAIDA, NFI_HORAENTRADASAIDA, NFI_TIPONOTA, NFI_TIPOFRETE, ');
    SQL.Add('NFI_TOTBASEDECALCULO, NFI_TOTICMS, NFI_TOTBASEST, NFI_TOTICMSST,');
    SQL.Add('NFI_TOTVALOR_FRETE, NFI_TOTVALOR_SEGURO,NFI_TOTOUTRASDESP,');
    SQL.Add('NFI_TOTVALORIPI, NFI_TOTISS, NFI_DADOSADICIONAIS, NFI_DESTBAIRRO,');
    SQL.add('NFI_DESTCEP, NFI_NUMERO, NFI_ALIQUOTAISS ) VALUES (');
    SQL.Add(':NFI_NATUREZAOPERACAO, :NFI_CONDICOESPAGAMENTO, :NFI_CFOP,');
    SQL.Add(':NFI_DESTNOME, :NFI_DESTCNPJ, :NFI_DESTENDERECO, ');
    SQL.Add(':NFI_DESTMUNICIPIO,:NFI_DESTFONEFAX,:NFI_DESTUF,:NFI_DESTIE,');
    SQL.Add(':NFI_EMISSAO, :NFI_DATAENTRADASAIDA, :NFI_HORAENTRADASAIDA, ');
    SQL.Add(':NFI_TIPONOTA, :NFI_TIPOFRETE,');
    SQL.Add(':NFI_TOTBASEDECALCULO,:NFI_TOTICMS,:NFI_TOTBASEST,:NFI_TOTICMSST,');
    SQL.Add(':NFI_TOTVALOR_FRETE,:NFI_TOTVALOR_SEGURO, :NFI_TOTOUTRASDESP,');
    SQL.Add(':NFI_TOTVALORIPI, :NFI_TOTISS,:NFI_DADOSADICIONAIS,:NFI_DESTBAIRRO');
    SQl.Add(',:NFI_DESTCEP,:NFI_NUMERO, :NFI_ALIQUOTAISS);');
    ParamByName('NFI_NATUREZAOPERACAO').AsString    := Nota.NaturezaOperacao;
    ParamByName('NFI_CONDICOESPAGAMENTO').AsString  := Nota.CondicoesPagamento;
    ParamByName('NFI_CFOP').AsString                := nota.CFOP;
    ParamByName('NFI_DESTNOME').AsString            := Nota.DM_NomeRazaoSocial;
    ParamByName('NFI_DESTCNPJ').AsString            := Nota.DM_CPF_CNPJ;
    ParamByName('NFI_DESTENDERECO').AsString        := Nota.DM_Endereco;
    ParamByName('NFI_DESTMUNICIPIO').AsString       := Nota.DM_Municipio;
    ParamByName('NFI_DESTFONEFAX').AsString         := Nota.DM_FoneFax;
    ParamByName('NFI_DESTUF').AsString              := Nota.DM_UF;
    ParamByName('NFI_DESTIE').AsString              := Nota.DM_InscricaoEstadual;
    ParamByName('NFI_EMISSAO').AsSQLTimeStamp       := DateTimeToSQLTimeStamp(Nota.DM_DataEmissao);
    ParamByName('NFI_DATAENTRADASAIDA').AsDate      := Nota.DM_DataSaidaEntrada;
    ParamByName('NFI_HORAENTRADASAIDA').AsTime      := Nota.DM_HoraSaidaEntrada;
    ParamByName('NFI_TIPONOTA').AsString            := IfThen(Nota.NotaSaida,'S','E');
    ParamByName('NFI_TIPOFRETE').AsString           := IfThen(Nota.DadosTransporte.FretePorContaEmitente,'E','D');
    ParamByName('NFI_TOTBASEDECALCULO').AsCurrency  := Nota.BaseCalculoICMS;
    ParamByName('NFI_TOTICMS').AsCurrency           := Nota.ValorTotalICMS;
    ParamByName('NFI_TOTBASEST').AsCurrency         := Nota.BaseCalculoICMSSubstituicao;
    ParamByName('NFI_TOTICMSST').AsCurrency         := Nota.ValorICMSSubstituicao;
    ParamByName('NFI_TOTVALOR_FRETE').AsCurrency    := Nota.ValorFrete;
    ParamByName('NFI_TOTVALOR_SEGURO').AsCurrency   := Nota.ValorSeguro;
    ParamByName('NFI_TOTOUTRASDESP').AsCurrency     := Nota.OutrasDespesasAcessorias;
    ParamByName('NFI_TOTVALORIPI').AsCurrency       := Nota.ValorIPI;
    ParamByName('NFI_TOTISS').AsCurrency            := Nota.ValorISS;
    ParamByName('NFI_DADOSADICIONAIS').AsMemo       := Nota.DadosAdicionais.Text;
    ParamByName('NFI_DESTBAIRRO').AsString          := Nota.DM_BairroDistrito;
    ParamByName('NFI_DESTCEP').AsString             := Nota.DM_CEP;
    ParamByName('NFI_NUMERO').AsString              := Nota.NumeroNota;
    ParamByName('NFI_ALIQUOTAISS').AsFloat          := Nota.AliquotaISS;
    if ExecSQL <> 1 then
      Result := 1
    else begin
      with SelecionarNotaPorNumero(Nota.NumeroNota,YearOf(nota.DM_DataEmissao)) do begin
        Result := NotaIDF;
        Free;
      end;
    end;
  end;
  Query.Free;
end;

function TFBNotaFiscalImpressaDAO.SelecionarIdNota(Numero: String;
  Ano: Integer): Integer;
var
  DataSet : TSQLClientDataSet;
begin
  DataSet := TSQLClientDataSet.Create(nil);
  with DataSet do begin
    DBConnection  := DtmGeral.ConexaoBanco;
    CommandText   := 'SELECT NFI_IDF FROM NOTAS_FISCAIS ' +
      ' WHERE (NFI_NUMERO = ' + QuotedStr(Numero) +
      ') AND (extract(year  from NFI_EMISSAO) = ' + IntToStr(Ano) + ')';
    Open;
    Result := FieldByName('NFI_IDF').AsInteger;
    Free;
  end;
end;

function TFBNotaFiscalImpressaDAO.SelecionarNotaPorID(
  id: Integer): TImpressaoNotaFiscal;
begin
  Result := TImpressaoNotaFiscal(
    DataSetToNotaFiscal(
      SelecionarNotas('WHERE NFI_IDF = ' + IntToStr(id ))).Items[0]);
end;

function TFBNotaFiscalImpressaDAO.SelecionarNotaPorNumero(Numero: String;
  Ano: Integer): TImpressaoNotaFiscal;
begin
   Result := TImpressaoNotaFiscal(DataSetToNotaFiscal(SelecionarNotas(
    ' WHERE (NFI_NUMERO = ' + QuotedStr(Numero) +
    ') AND (extract(year  from NFI_EMISSAO) = ' + IntToStr(Ano) + ')')).Items[0]);
end;

function TFBNotaFiscalImpressaDAO.SelecionarNotas(
  criteria: String): TDataSet;
var
  DataSet : TSQLClientDataSet;
begin
  DataSet := TSQLClientDataSet.Create(nil);
  with DataSet do begin
    DBConnection  := DtmGeral.ConexaoBanco;
    CommandText   := 'SELECT NFI_IDF, NFI_NATUREZAOPERACAO, ' +
      'NFI_CONDICOESPAGAMENTO, NFI_CFOP, NFI_DESTNOME, NFI_DESTCNPJ,' +
      ' NFI_DESTENDERECO, NFI_DESTMUNICIPIO, NFI_DESTFONEFAX, NFI_DESTUF,' +
      ' NFI_DESTIE, NFI_EMISSAO, NFI_DATAENTRADASAIDA, NFI_HORAENTRADASAIDA, '+
      ' NFI_TIPONOTA, NFI_TIPOFRETE,'+
      ' NFI_TOTBASEDECALCULO, NFI_TOTICMS, NFI_TOTBASEST, NFI_TOTICMSST,'+
      ' NFI_TOTVALOR_FRETE, NFI_TOTVALOR_SEGURO, NFI_TOTOUTRASDESP,'+
      ' NFI_TOTVALORIPI, NFI_TOTISS, NFI_DADOSADICIONAIS, NFI_DESTBAIRRO,'+
      ' NFI_DESTCEP, NFI_NUMERO, NFI_ALIQUOTAISS FROM NOTAS_FISCAIS ' + criteria;
    DataSet.Open;
    Result := DataSet;
  end;
end;
 }
{ TFBNotaProdutoDAO }
{
function TFBNotaProdutoDAO.AlterarProduto(Item: TItemNotaFiscal): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('UPDATE NOTAS_FISCAIS_PRODUTOS SET');
    SQL.Add('NFP_CODPRODUTO = :NFP_CODPRODUTO,');
    SQL.Add('NFP_DESCRICAO = :NFP_DESCRICAO,');
    SQL.Add('NFP_VALOR_UNITARIO = :NFP_VALOR_UNITARIO,');
    SQL.Add('NFP_QUANTIDADE = :NFP_QUANTIDADE,');
    SQL.Add('NFP_UNIDADE = :NFP_UNIDADE,');
    SQL.Add(' NFP_ALIQUOTA_ICMS = :NFP_ALIQUOTA_ICMS,');
    SQL.Add('NFP_ALIQUOTA_IPI = :NFP_ALIQUOTA_IPI,');
    SQL.Add('NFP_DESCONTO = :NFP_DESCONTO,');
    SQL.Add('NFP_CLFISCAL = :NFP_CLFISCAL,');
    SQL.Add('NFP_SITTRIB = :NFP_SITTRIB ');
    SQL.Add('WHERE NFI_IDF = :NFI_IDF AND NFP_SEQ = :NFP_SEQ);');
    ParamByName('NFI_IDF').AsInteger              := Item.IdfNota;
    ParamByName('NFP_SEQ').AsInteger              := Item.SequenciaItem;
    ParamByName('NFP_CODPRODUTO').AsString        := Item.Codigo;
    ParamByName('NFP_DESCRICAO').AsString         := Item.Descricao;
    ParamByName('NFP_VALOR_UNITARIO').AsCurrency  := item.ValorUnitario;
    ParamByName('NFP_QUANTIDADE').AsFloat         := Item.Quantidade;
    ParamByName('NFP_UNIDADE').AsString           := Item.Unidade;
    ParamByName('NFP_ALIQUOTA_ICMS').AsFloat      := Item.ICMS;
    ParamByName('NFP_ALIQUOTA_IPI').AsFloat       := Item.IPI;
    ParamByName('NFP_DESCONTO').AsFloat           := Item.Desconto;
    ParamByName('NFP_CLFISCAL').AsString          := Item.CLFiscal;
    ParamByName('NFP_SITTRIB').AsString           := Item.SituacaoTributaria;
    Result := ExecSQL = 1;
    Query.Free;
  end;
end;

function TFBNotaProdutoDAO.DataSetParaProdutos(
  DataSet: TDataSet): TObjectList;
var
  Lista : TObjectList;
  Produto : TItemNotaFiscal;
begin
  Lista := TObjectList.Create;
  with DataSet do begin
    First;
    while not eof do begin
      Produto                     := TItemNotaFiscal.Create;
      Produto.DescricaoTexto.Add('');
      Produto.SequenciaItem       := FieldByName('NFP_SEQ').AsInteger;
      Produto.Codigo              := FieldByName('NFP_CODPRODUTO').AsString;
      Produto.Descricao           := FieldByName('NFP_DESCRICAO').AsString;
      Produto.CLFiscal            := FieldByName('NFP_CLFISCAL').AsString;
      Produto.SituacaoTributaria  := FieldByName('NFP_SITTRIB').AsString;
      Produto.Unidade             := FieldByName('NFP_UNIDADE').AsString;
      Produto.Quantidade          := FieldByName('NFP_QUANTIDADE').AsFloat;
      Produto.ValorUnitario       := FieldByName('NFP_VALOR_UNITARIO').AsCurrency;
      Produto.ICMS                := FieldByName('NFP_ALIQUOTA_ICMS').AsFloat;
      Produto.IPI                 := FieldByName('NFP_ALIQUOTA_IPI').AsFloat;
      Next;
      Lista.Add(Produto);
    end;
  end;
  Result := Lista;
end;

function TFBNotaProdutoDAO.ExcluirProduto(Item: TItemNotaFiscal): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('DELETE FROM NOTAS_FISCAIS_PRODUTOS WHERE NFI_IDF = :NFI_IDF AND NFP_SEQ = :NFP_SEQ');
    ParamByName('NFI_IDF').AsInteger              := Item.IdfNota;
    ParamByName('NFP_SEQ').AsInteger              := Item.SequenciaItem;
    Result := ExecSQL = 1;
    Query.Free;
  end;
end;

function TFBNotaProdutoDAO.InserirProduto(Item: TItemNotaFiscal): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('INSERT INTO NOTAS_FISCAIS_PRODUTOS (NFI_IDF, NFP_SEQ,');
    SQL.Add('NFP_CODPRODUTO, NFP_DESCRICAO, NFP_VALOR_UNITARIO, NFP_QUANTIDADE,');
    SQL.Add('NFP_UNIDADE, NFP_ALIQUOTA_ICMS, NFP_ALIQUOTA_IPI, NFP_DESCONTO,');
    SQL.Add('NFP_CLFISCAL, NFP_SITTRIB) VALUES (:NFI_IDF, :NFP_SEQ, ');
    SQL.Add(':NFP_CODPRODUTO, :NFP_DESCRICAO, :NFP_VALOR_UNITARIO, ');
    SQL.Add(':NFP_QUANTIDADE,:NFP_UNIDADE,:NFP_ALIQUOTA_ICMS,');
    SQL.Add(':NFP_ALIQUOTA_IPI, :NFP_DESCONTO, :NFP_CLFISCAL, :NFP_SITTRIB);');
    ParamByName('NFI_IDF').AsInteger              := Item.IdfNota;
    ParamByName('NFP_SEQ').AsInteger              := Item.SequenciaItem;
    ParamByName('NFP_CODPRODUTO').AsString        := Item.Codigo;
    ParamByName('NFP_DESCRICAO').AsString         := Item.Descricao;
    ParamByName('NFP_VALOR_UNITARIO').AsCurrency  := item.ValorUnitario;
    ParamByName('NFP_QUANTIDADE').AsFloat         := Item.Quantidade;
    ParamByName('NFP_UNIDADE').AsString           := Item.Unidade;
    ParamByName('NFP_ALIQUOTA_ICMS').AsFloat      := Item.ICMS;
    ParamByName('NFP_ALIQUOTA_IPI').AsFloat       := Item.IPI;
    ParamByName('NFP_DESCONTO').AsFloat           := Item.Desconto;
    ParamByName('NFP_CLFISCAL').AsString          := Item.CLFiscal;
    ParamByName('NFP_SITTRIB').AsString           := Item.SituacaoTributaria;
    Result := ExecSQL = 1;
    Query.Free;
  end;
end;

procedure TFBNotaProdutoDAO.InserirProdutosNota(Itens: TObjectList;
  Notaidf: Integer);
var
  i : integer;
begin
  for i := 0 to Itens.Count - 1 do begin
    TItemNotaFiscal(Itens.Items[i]).IdfNota := Notaidf;
    TItemNotaFiscal(Itens.Items[i]).SequenciaItem := i +1;
    InserirProduto(TItemNotaFiscal(Itens.Items[i]));
  end;
end;

function TFBNotaProdutoDAO.SelecionarProdutos(criteria: String): TDataSet;
var
  DataSet : TSQLClientDataSet;
begin
  DataSet := TSQLClientDataSet.Create(nil);
  With DataSet do begin
    DBConnection := DtmGeral.ConexaoBanco;
    CommandText := 'SELECT NFI_IDF, NFP_SEQ, NFP_CODPRODUTO, NFP_DESCRICAO,'+
      ' NFP_VALOR_UNITARIO, NFP_QUANTIDADE, NFP_UNIDADE, NFP_ALIQUOTA_ICMS,'+
      ' NFP_ALIQUOTA_IPI, NFP_DESCONTO, NFP_CLFISCAL, NFP_SITTRIB FROM '+
      ' NOTAS_FISCAIS_PRODUTOS ' + criteria;
    Open;
    Result := DataSet;
  end;
end;

function TFBNotaProdutoDAO.SelecionarProdutosPorNota(
  id: Integer): TDataSet;
begin
  Result := SelecionarProdutos('WHERE NFI_IDF = ' + IntToStr(id));
end;
     }
{ TFBNotaServicoDAO }
 {
function TFBNotaServicoDAO.AlterarServico(Item: TItemNotaFiscal): Boolean;
var
  Query : TSQLQuery;
  Stream : TStream;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('UPDATE NOTAS_FISCAIS_SERVICOS SET NFS_DESCRICAO = :NFS_DESCRICAO,');
    SQL.Add('NFS_VALOR_UNITARIO = :NFS_VALOR_UNITARIO,');
    SQL.Add('NFS_VALOR_TOTAL = :NFS_VALOR_TOTAL,');
    SQL.Add('NFS_QUANTIDADE = :NFS_QUANTIDADE, NFS_CODIGO = :NFS_CODIGO WHERE');
    SQL.Add('NFI_IDF = :NFI_IDF AND NFS_SEQ = :NFS_SEQ');
    Stream                                        := TMemoryStream.Create;
    Item.DescricaoTexto.SaveToStream(Stream);
    ParamByName('NFS_DESCRICAO').LoadFromStream(Stream,ftBlob);
    ParamByName('NFS_VALOR_UNITARIO').AsCurrency  := Item.ValorUnitario;
    ParamByName('NFS_VALOR_TOTAL').AsCurrency     := Item.ValorTotal;
    ParamByName('NFS_QUANTIDADE').AsFloat         := Item.Quantidade;
    ParamByName('NFS_CODIGO').AsString            := Item.Codigo;
    ParamByName('NFI_IDF').AsInteger              := Item.IdfNota;
    ParamByName('NFS_SEQ').AsInteger              := Item.SequenciaItem;
    Result                                        := ExecSQL = 1;
    FreeAndNil(Stream);
  end;
end;

function TFBNotaServicoDAO.DataSetParaServico(
  DataSet: TDataSet): TObjectList;
var
  Lista : TObjectList;
  Serv : TItemNotaFiscal;
  ListaStrings : TStrings;
  i : integer;
  Stream : TStream;
begin
  Lista := TObjectList.Create;
  with DataSet do begin
    First;
    while not eof do begin
      Serv                := TItemNotaFiscal.Create;
      Serv.IdfNota        := FieldByName('NFI_IDF').AsInteger;
      Serv.SequenciaItem  := FieldByName('NFS_SEQ').AsInteger;
      Serv.Codigo         := FieldByName('NFS_CODIGO').AsString;
      (FieldByName('NFS_DESCRICAO') as TBlobField).SaveToFile('temp.txt');
      Serv.DescricaoTexto.LoadFromFile('temp.txt');
      DeleteFile('temp.txt');
      Serv.ValorUnitario  := FieldByName('NFS_VALOR_UNITARIO').AsCurrency;
      Serv.Quantidade     := FieldByName('NFS_QUANTIDADE').AsFloat;
      Lista.Add(Serv);
      Next;
    end;
  end;
  Result := Lista;
end;

function TFBNotaServicoDAO.ExcluirServico(Item: TItemNotaFiscal): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('DELETE FROM NOTAS_FISCAIS_SERVICOS WHERE NFI_IDF = :NFI_IDF');
    SQL.Add(' AND NFS_SEQ = :NFS_SEQ;');
    ParamByName('NFI_IDF').AsInteger := Item.IdfNota;
    ParamByName('NFS_SEQ').AsInteger := Item.SequenciaItem;
    Result := ExecSQL = 1;
  end;
end;

procedure TFBNotaServicoDAO.InserirServicosNota(Itens: TObjectList;
  Notaidf: Integer);
var
  i : integer;
begin
  for i := 0 to Itens.Count - 1 do begin
    TItemNotaFiscal(Itens.Items[i]).IdfNota := Notaidf;
    InserirServico(TItemNotaFiscal(Itens.Items[i]));
  end;
end;

function TFBNotaServicoDAO.InserirServico(Item: TItemNotaFiscal): Boolean;
var
  Query : TSQLQuery;
  Stream : TStream;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('INSERT INTO NOTAS_FISCAIS_SERVICOS (');
    SQL.Add('NFI_IDF, NFS_SEQ, NFS_DESCRICAO, NFS_VALOR_UNITARIO,');
    SQL.Add('NFS_VALOR_TOTAL, NFS_QUANTIDADE, NFS_CODIGO) VALUES (');
    SQL.Add(':NFI_IDF, :NFS_SEQ, :NFS_DESCRICAO,:NFS_VALOR_UNITARIO,');
    SQL.Add(':NFS_VALOR_TOTAL, :NFS_QUANTIDADE,:NFS_CODIGO);');
    Stream := TMemoryStream.Create;
    Item.DescricaoTexto.SaveToStream(Stream);
    ParamByName('NFS_DESCRICAO').LoadFromStream(Stream,ftMemo);
    ParamByName('NFS_VALOR_UNITARIO').AsCurrency := Item.ValorUnitario;
    ParamByName('NFS_VALOR_TOTAL').AsCurrency := Item.ValorTotal;
    ParamByName('NFS_QUANTIDADE').AsFloat := Item.Quantidade;
    ParamByName('NFS_CODIGO').AsString := Item.Codigo;
    ParamByName('NFI_IDF').AsInteger := Item.IdfNota;
    ParamByName('NFS_SEQ').AsInteger := Item.SequenciaItem;
    Result := ExecSQL = 1;
    FreeAndNil(Stream);
  end;
end;

function TFBNotaServicoDAO.SelecionarServico(criteria: String): TDataSet;
var
  DataSet : TSQLClientDataSet;
begin
  DataSet := TSQLClientDataSet.Create(nil);
  with DataSet do begin
    DBConnection := DtmGeral.ConexaoBanco;
    CommandText := 'SELECT NFI_IDF, NFS_SEQ, NFS_DESCRICAO, NFS_VALOR_UNITARIO,'
      + 'NFS_VALOR_TOTAL, NFS_QUANTIDADE, NFS_CODIGO FROM NOTAS_FISCAIS_SERVICOS ';
    CommandText := CommandText + criteria;
    Open;
    Result := DataSet;
  end;
end;

function TFBNotaServicoDAO.SelecionarServicoPorNota(id: Integer): TDataSet;
begin
  Result := SelecionarServico('WHERE NFI_IDF = ' + IntToStr(id));
end;   }

{ TFBNotaTransporte }
{
function TFBNotaTransporte.AlterarTransporte(
  Nota: TTransporteNota): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('UPDATE NOTAS_FISCAIS_TRANSPORTE SET NFT_NOME = :NFT_NOME,');
    SQL.Add('NFT_PLACA = :NFT_PLACA, NFT_UFPLACA = :NFT_UFPLACA,');
    SQL.Add('NFT_CPFCNPJ = :NFT_CPFCNPJ, NFT_ENDERECO = :NFT_ENDERECO,');
    SQL.Add('NFT_MUNICIPIO = :NFT_MUNICIPIO, NFT_UF = :NFT_UF,');
    SQL.Add('NFT_INSCRICAO = :NFT_INSCRICAO, NFT_QUANTIDADE = :NFT_QUANTIDADE,');
    SQL.Add('NFT_ESPECIE = :NFT_ESPECIE, NFT_MARCA = :NFT_MARCA,');
    SQL.Add('NFT_NUMERO = :NFT_NUMERO, NFT_PESOBRUTO = :NFT_PESOBRUTO,');
    SQL.Add('NFT_PESOLIQUIDO = :NFT_PESOLIQUIDO WHERE NFI_IDF = :NFI_IDF;');
    ParamByName('NFT_NOME').AsString        := Nota.RazaoSocial;
    ParamByName('NFT_PLACA').AsString       := Nota.PlacaVeiculo;
    ParamByName('NFT_UFPLACA').AsString     := Nota.UF_Placa;
    ParamByName('NFT_CPFCNPJ').AsString     := Nota.CPF_CNPJ;
    ParamByName('NFT_ENDERECO').AsString    := Nota.Endereco;
    ParamByName('NFT_MUNICIPIO').AsString   := Nota.Municipio;
    ParamByName('NFT_UF').AsString          := Nota.UF;
    ParamByName('NFT_INSCRICAO').AsString   := Nota.Inscricao_Estadual;
    ParamByName('NFT_QUANTIDADE').AsString  := Nota.Quantidade;
    ParamByName('NFT_ESPECIE').AsString     := Nota.Especie;
    ParamByName('NFT_MARCA').AsString       := Nota.Marca;
    ParamByName('NFT_NUMERO').AsString      := Nota.Numero;
    ParamByName('NFT_PESOBRUTO').AsString   := Nota.PesoBruto;
    ParamByName('NFT_PESOLIQUIDO').AsString := Nota.PesoLiquido;
    ParamByName('NFI_IDF').AsInteger        := Nota.NotaIdf;
    Result                                  := ExecSQL = 1;
  end;
end;

function TFBNotaTransporte.DataSetToTransporte(
  DataSet: TDataSet): TObjectList;
var
  Lista : TObjectList;
  Transporte : TTransporteNota;
begin
  Lista := TObjectList.Create;
  with DataSet do begin
    First;
    while not eof do begin
      Transporte                    := TTransporteNota.Create;
      Transporte.RazaoSocial        := FieldByName('NFT_NOME').AsString;
      Transporte.PlacaVeiculo       := FieldByName('NFT_PLACA').AsString;
      Transporte.UF_Placa           := FieldByName('NFT_UFPLACA').AsString;
      Transporte.CPF_CNPJ           := FieldByName('NFT_CPFCNPJ').AsString;
      Transporte.Endereco           := FieldByName('NFT_ENDERECO').AsString;
      Transporte.Municipio          := FieldByName('NFT_MUNICIPIO').AsString;
      Transporte.UF                 := FieldByName('NFT_UF').AsString;
      Transporte.Inscricao_Estadual := FieldByName('NFT_INSCRICAO').AsString;
      Transporte.Quantidade         := FieldByName('NFT_QUANTIDADE').AsString;
      Transporte.Especie            := FieldByName('NFT_ESPECIE').AsString;
      Transporte.Marca              := FieldByName('NFT_MARCA').AsString;
      Transporte.Numero             := FieldByName('NFT_NUMERO').AsString;
      Transporte.PesoBruto          := FieldByName('NFT_PESOBRUTO').AsString;
      Transporte.PesoLiquido        := FieldByName('NFT_PESOLIQUIDO').AsString;
      Transporte.NotaIdf            := FieldByName('NFI_IDF').AsInteger;
      Next;
      Lista.Add(Transporte);
    end;
  end;
  Result := Lista;
end;

function TFBNotaTransporte.ExcluirTransporte(
  Nota: TTransporteNota): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('DELETE FROM NOTAS_FISCAIS_TRANSPORTE WHERE NFI_IDF = :NFI_IDF');
    ParamByName('NFI_IDF').AsInteger        := Nota.NotaIdf;
    Result                                  := ExecSQL = 1;
  end;
end;

function TFBNotaTransporte.InserirTransporte(
  nota: TTransporteNota): Boolean;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  with Query do begin
    SQLConnection := DtmGeral.ConexaoBanco;
    SQL.Add('INSERT INTO NOTAS_FISCAIS_TRANSPORTE (NFI_IDF, NFT_NOME, NFT_PLACA,');
    SQL.Add('NFT_UFPLACA, NFT_CPFCNPJ, NFT_ENDERECO, NFT_MUNICIPIO, NFT_UF,');
    SQL.Add('NFT_INSCRICAO, NFT_QUANTIDADE, NFT_ESPECIE, NFT_MARCA, NFT_NUMERO,');
    SQL.Add('NFT_PESOBRUTO, NFT_PESOLIQUIDO) VALUES (:NFI_IDF,:NFT_NOME,:NFT_PLACA,');
    SQL.Add(':NFT_UFPLACA, :NFT_CPFCNPJ, :NFT_ENDERECO, :NFT_MUNICIPIO, :NFT_UF,');
    SQL.Add(':NFT_INSCRICAO, :NFT_QUANTIDADE, :NFT_ESPECIE, :NFT_MARCA,');
    SQL.Add(':NFT_NUMERO, :NFT_PESOBRUTO, :NFT_PESOLIQUIDO)');
    ParamByName('NFT_NOME').AsString        := Nota.RazaoSocial;
    ParamByName('NFT_PLACA').AsString       := Nota.PlacaVeiculo;
    ParamByName('NFT_UFPLACA').AsString     := Nota.UF_Placa;
    ParamByName('NFT_CPFCNPJ').AsString     := Nota.CPF_CNPJ;
    ParamByName('NFT_ENDERECO').AsString    := Nota.Endereco;
    ParamByName('NFT_MUNICIPIO').AsString   := Nota.Municipio;
    ParamByName('NFT_UF').AsString          := Nota.UF;
    ParamByName('NFT_INSCRICAO').AsString   := Nota.Inscricao_Estadual;
    ParamByName('NFT_QUANTIDADE').AsString  := Nota.Quantidade;
    ParamByName('NFT_ESPECIE').AsString     := Nota.Especie;
    ParamByName('NFT_MARCA').AsString       := Nota.Marca;
    ParamByName('NFT_NUMERO').AsString      := Nota.Numero;
    ParamByName('NFT_PESOBRUTO').AsString   := Nota.PesoBruto;
    ParamByName('NFT_PESOLIQUIDO').AsString := Nota.PesoLiquido;
    ParamByName('NFI_IDF').AsInteger        := Nota.NotaIdf;
    Result                                  := ExecSQL = 1;
  end;
end;

function TFBNotaTransporte.SelecionarPorNota(id: Integer): TTransporteNota;
var
  DataSet : TDataSet;
  Lista : TObjectList;
begin
  DataSet := SelecionarTransporte('WHERE NFI_IDF = ' + IntToStr(id));
  if DataSet.IsEmpty then begin
    Result := nil;
    DataSet.Free;
  end
  else begin
    Lista := DataSetToTransporte(DataSet);
    DataSet.Close;
    DataSet.Free;
    Result := TTransporteNota(Lista.Extract(Lista.Items[0]));
    Lista.Free;
  end;
end;

function TFBNotaTransporte.SelecionarTransporte(
  criteria: String): TDataSet;
var
  DataSet :  TSQLClientDataSet;
begin
  DataSet := TSQLClientDataSet.Create(nil);
  with DataSet do begin
    DBConnection := DtmGeral.ConexaoBanco;
    CommandText := 'SELECT NFI_IDF, NFT_NOME, NFT_PLACA, NFT_UFPLACA, ' +
      ' NFT_CPFCNPJ, NFT_ENDERECO, NFT_MUNICIPIO, NFT_UF, NFT_INSCRICAO,'+
      ' NFT_QUANTIDADE, NFT_ESPECIE, NFT_MARCA, NFT_NUMERO, NFT_PESOBRUTO,'+
      ' NFT_PESOLIQUIDO FROM NOTAS_FISCAIS_TRANSPORTE ' + criteria;
    Open;
    Result := DataSet;
  end;
end;   }

{ TFBNotaFiscalImpressaDAO }

function TFBNotaFiscalImpressaDAO.AlterarNotaFiscal(
  Nota: TImpressaoNotaFiscal): Boolean;
begin

end;

function TFBNotaFiscalImpressaDAO.DataSetToNotaFiscal(
  DataSet: TDataSet): TObjectList;
begin

end;

function TFBNotaFiscalImpressaDAO.ExcluirNotaFiscal(
  Numero: String): Boolean;
begin

end;

function TFBNotaFiscalImpressaDAO.ExisteNota(Numero: String;
  Ano: Integer): Boolean;
begin

end;

function TFBNotaFiscalImpressaDAO.InserirNotaFiscal(
  Nota: TImpressaoNotaFiscal): integer;
begin

end;

function TFBNotaFiscalImpressaDAO.SelecionarIdNota(Numero: String;
  Ano: Integer): Integer;
begin

end;

function TFBNotaFiscalImpressaDAO.SelecionarNotaPorID(
  id: Integer): TImpressaoNotaFiscal;
begin

end;

function TFBNotaFiscalImpressaDAO.SelecionarNotaPorNumero(Numero: String;
  Ano: Integer): TImpressaoNotaFiscal;
begin

end;

function TFBNotaFiscalImpressaDAO.SelecionarNotas(
  criteria: String): TDataSet;
begin

end;

{ TFBNotaProdutoDAO }

function TFBNotaProdutoDAO.AlterarProduto(Item: TItemNotaFiscal): Boolean;
begin

end;

function TFBNotaProdutoDAO.DataSetParaProdutos(
  DataSet: TDataSet): TObjectList;
begin

end;

function TFBNotaProdutoDAO.ExcluirProduto(Item: TItemNotaFiscal): Boolean;
begin

end;

function TFBNotaProdutoDAO.InserirProduto(Item: TItemNotaFiscal): Boolean;
begin

end;

procedure TFBNotaProdutoDAO.InserirProdutosNota(Itens: TObjectList;
  Notaidf: Integer);
begin

end;

function TFBNotaProdutoDAO.SelecionarProdutos(criteria: String): TDataSet;
begin

end;

function TFBNotaProdutoDAO.SelecionarProdutosPorNota(
  id: Integer): TDataSet;
begin

end;

{ TFBNotaServicoDAO }

function TFBNotaServicoDAO.AlterarServico(Item: TItemNotaFiscal): Boolean;
begin

end;

function TFBNotaServicoDAO.DataSetParaServico(
  DataSet: TDataSet): TObjectList;
begin

end;

function TFBNotaServicoDAO.ExcluirServico(Item: TItemNotaFiscal): Boolean;
begin

end;

function TFBNotaServicoDAO.InserirServico(Item: TItemNotaFiscal): Boolean;
begin

end;

procedure TFBNotaServicoDAO.InserirServicosNota(Itens: TObjectList;
  Notaidf: Integer);
begin

end;

function TFBNotaServicoDAO.SelecionarServico(criteria: String): TDataSet;
begin

end;

function TFBNotaServicoDAO.SelecionarServicoPorNota(id: Integer): TDataSet;
begin

end;

{ TFBNotaTransporte }

function TFBNotaTransporte.AlterarTransporte(
  Nota: TTransporteNota): Boolean;
begin

end;

function TFBNotaTransporte.DataSetToTransporte(
  DataSet: TDataSet): TObjectList;
begin

end;

function TFBNotaTransporte.ExcluirTransporte(
  Nota: TTransporteNota): Boolean;
begin

end;

function TFBNotaTransporte.InserirTransporte(
  nota: TTransporteNota): Boolean;
begin

end;

function TFBNotaTransporte.SelecionarPorNota(id: Integer): TTransporteNota;
begin

end;

function TFBNotaTransporte.SelecionarTransporte(
  criteria: String): TDataSet;
begin

end;

end.
